const express = require("express")
const fs = require("fs")
const path = require("path")
const { showData, addData } = require("../../mode/fileHandle")
const router = express.Router()

const classFilePath = path.resolve("datas", "cdata.json")

// 班级列表
router.get("/", (req, res) => {
    showData(classFilePath, "class", res)
    // let viewData = {
    //     data: []
    // }
    // // 第一个参数是模板名称, 第二个参数是需要传入模板中的数据
    // fs.readFile(path.resolve("datas", "cdata.json"), "utf-8", (err, data) => {
    //     if (err) {
    //         return res.render("class", viewData)
    //     }
    //     if (data) {
    //         viewData = JSON.parse(data)
    //     }
    //     // console.log(viewData);
    //     res.render("class", viewData)
    // })
})

router.get("/add", (req, res) => {
    res.render("class-add")
})

router.post("/", (req, res) => {
    addData(classFilePath, req, res)
})

router.put("/", (req, res) => {
    // req.body
    // console.log(req.body);
    let {id, className} = req.body
    fs.readFile(path.resolve("datas", "cdata.json"), "utf-8", (err, data) => {
        if(err){
            return res.send({
                err: true,
                msg: "读取文件错误"
            })
        }
        if(data){
            let oldData = JSON.parse(data)
            // 修改对应的数据
            oldData.data[id].className = className
            // 写入文件
            fs.writeFile(path.resolve("datas", "cdata.json"), JSON.stringify(oldData), (err) => {
                if(err){
                    return res.send({
                        err: true,
                        msg: "写入文件错误"
                    })
                }
                res.send({
                    err: false,
                    msg: "修改班级成功"
                })
            })
        } else {
            return res.send({
                err: true,
                msg: "文件为空"
            })
        }
    })
})

router.get("/edit", (req, res) => {
    // console.log(req.query);
    let id = req.query.id
    // 拿到要修改的数据的索引号，读取文件拿到数组，通过索引找到对应的数据，传递给模板
    let viewData = {
        data: {}
    }
    fs.readFile(path.resolve("datas", "cdata.json"), "utf-8", (err, data) => {
        if(err){
            res.render("class-edit", viewData)
        }
        if(data){
            // console.log(data); // 字符串
            // console.log(JSON.parse(data));
            // 通过索引拿到修改的值
            // console.log(JSON.parse(data).data[id]);
            viewData.data = JSON.parse(data).data[id]
            viewData.data.id = id
            console.log(viewData);
        }
        res.render("class-edit", viewData)
    })
    
})

router.delete("/", (req, res) => {
    // 拿到删除数据的索引号
    let { id } = req.body
    // 读取文件
    fs.readFile(path.resolve("datas", "cdata.json"), "utf-8", (err, data) => {
        if(err){
            return res.send({
                err: true,
                msg: "读取文件出错"
            })
        }
        if(data){
            let oldData = JSON.parse(data).data
            // console.log(oldData);
            // 如何删除数组中对应索引的一项
            oldData.splice(id, 1)
            console.log(oldData);
            // 把删除好的数据写入文件
            // 把数据格式组装好
            let newData = {
                data: oldData
            }
            // console.log(newData);
            fs.writeFile(path.resolve("datas", "cdata.json"), JSON.stringify(newData), (err) => {
                if(err){
                    return res.send({
                        err: true,
                        msg: "写入文件出错"
                    })
                }
                return res.send({
                    err: false,
                    msg: "删除成功"
                })
            })
        }else{
            res.send({
                err: true,
                msg: "文件为空"
            })
        }

    })
})

module.exports = router